home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.border;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.Point;
- import java.awt.Rectangle;
- import javax.swing.UIManager;
-
- public class TitledBorder extends AbstractBorder {
- protected String title;
- protected Border border;
- protected int titlePosition;
- protected int titleJustification;
- protected Font titleFont;
- protected Color titleColor;
- private Point textLoc;
- public static final int DEFAULT_POSITION = 0;
- public static final int ABOVE_TOP = 1;
- public static final int TOP = 2;
- public static final int BELOW_TOP = 3;
- public static final int ABOVE_BOTTOM = 4;
- public static final int BOTTOM = 5;
- public static final int BELOW_BOTTOM = 6;
- public static final int DEFAULT_JUSTIFICATION = 0;
- public static final int LEFT = 1;
- public static final int CENTER = 2;
- public static final int RIGHT = 3;
- protected static final int EDGE_SPACING = 2;
- protected static final int TEXT_SPACING = 2;
- protected static final int TEXT_INSET_H = 5;
-
- public TitledBorder(String var1) {
- this((Border)null, var1, 1, 2, (Font)null, (Color)null);
- }
-
- public TitledBorder(Border var1) {
- this(var1, "", 1, 2, (Font)null, (Color)null);
- }
-
- public TitledBorder(Border var1, String var2) {
- this(var1, var2, 1, 2, (Font)null, (Color)null);
- }
-
- public TitledBorder(Border var1, String var2, int var3, int var4) {
- this(var1, var2, var3, var4, (Font)null, (Color)null);
- }
-
- public TitledBorder(Border var1, String var2, int var3, int var4, Font var5) {
- this(var1, var2, var3, var4, var5, (Color)null);
- }
-
- public TitledBorder(Border var1, String var2, int var3, int var4, Font var5, Color var6) {
- this.textLoc = new Point();
- this.title = var2;
- this.border = var1;
- this.titleFont = var5;
- this.titleColor = var6;
- this.setTitleJustification(var3);
- this.setTitlePosition(var4);
- }
-
- private static boolean computeIntersection(Rectangle var0, int var1, int var2, int var3, int var4) {
- int var5 = Math.max(var1, var0.x);
- int var6 = Math.min(var1 + var3, var0.x + var0.width);
- int var7 = Math.max(var2, var0.y);
- int var8 = Math.min(var2 + var4, var0.y + var0.height);
- var0.x = var5;
- var0.y = var7;
- var0.width = var6 - var5;
- var0.height = var8 - var7;
- return var0.width > 0 && var0.height > 0;
- }
-
- public Border getBorder() {
- Border var1 = this.border;
- if (var1 == null) {
- var1 = UIManager.getBorder("TitledBorder.border");
- }
-
- return var1;
- }
-
- public Insets getBorderInsets(Component var1) {
- return this.getBorderInsets(var1, new Insets(0, 0, 0, 0));
- }
-
- public Insets getBorderInsets(Component var1, Insets var2) {
- int var4 = 0;
- int var5 = 16;
- Border var6 = this.getBorder();
- if (var6 != null) {
- if (var6 instanceof AbstractBorder) {
- ((AbstractBorder)var6).getBorderInsets(var1, var2);
- } else {
- Insets var7 = var6.getBorderInsets(var1);
- var2.top = var7.top;
- var2.right = var7.right;
- var2.bottom = var7.bottom;
- var2.left = var7.left;
- }
- } else {
- var2.left = var2.top = var2.right = var2.bottom = 0;
- }
-
- var2.left += 4;
- var2.right += 4;
- var2.top += 4;
- var2.bottom += 4;
- if (var1 != null && this.getTitle() != null && !this.getTitle().equals("")) {
- Font var8 = this.getFont(var1);
- FontMetrics var3 = var1.getFontMetrics(var8);
- if (var3 != null) {
- var4 = var3.getDescent();
- var5 = var3.getAscent();
- }
-
- switch (this.getTitlePosition()) {
- case 0:
- case 2:
- var2.top += var5 + var4;
- break;
- case 1:
- var2.top += var5 + var4 + (Math.max(2, 4) - 2);
- break;
- case 3:
- var2.top += var5 + var4 + 2;
- break;
- case 4:
- var2.bottom += var5 + var4 + 2;
- break;
- case 5:
- var2.bottom += var5 + var4;
- break;
- case 6:
- var2.bottom += var5 + 2;
- }
-
- return var2;
- } else {
- return var2;
- }
- }
-
- protected Font getFont(Component var1) {
- Font var2;
- if ((var2 = this.getTitleFont()) != null) {
- return var2;
- } else {
- return var1 != null && (var2 = var1.getFont()) != null ? var2 : new Font("Dialog", 0, 12);
- }
- }
-
- public Dimension getMinimumSize(Component var1) {
- Insets var2 = this.getBorderInsets(var1);
- Dimension var3 = new Dimension(var2.right + var2.left, var2.top + var2.bottom);
- Font var4 = this.getFont(var1);
- FontMetrics var5 = var1.getFontMetrics(var4);
- switch (this.titlePosition) {
- case 0:
- case 2:
- case 3:
- case 4:
- case 5:
- default:
- var3.width += var5.stringWidth(this.getTitle());
- break;
- case 1:
- case 6:
- var3.width = Math.max(var5.stringWidth(this.getTitle()), var3.width);
- }
-
- return var3;
- }
-
- public String getTitle() {
- return this.title;
- }
-
- public Color getTitleColor() {
- Color var1 = this.titleColor;
- if (var1 == null) {
- var1 = UIManager.getColor("TitledBorder.titleColor");
- }
-
- return var1;
- }
-
- public Font getTitleFont() {
- Font var1 = this.titleFont;
- if (var1 == null) {
- var1 = UIManager.getFont("TitledBorder.font");
- }
-
- return var1;
- }
-
- public int getTitleJustification() {
- return this.titleJustification;
- }
-
- public int getTitlePosition() {
- return this.titlePosition;
- }
-
- public boolean isBorderOpaque() {
- return false;
- }
-
- public void paintBorder(Component var1, Graphics var2, int var3, int var4, int var5, int var6) {
- Border var7 = this.getBorder();
- if (this.getTitle() != null && !this.getTitle().equals("")) {
- Rectangle var8 = new Rectangle(var3 + 2, var4 + 2, var5 - 4, var6 - 4);
- Font var9 = var2.getFont();
- Color var10 = var2.getColor();
- var2.setFont(this.getFont(var1));
- FontMetrics var11 = var2.getFontMetrics();
- int var12 = var11.getHeight();
- int var13 = var11.getDescent();
- int var14 = var11.getAscent();
- int var16 = var11.stringWidth(this.getTitle());
- Insets var17;
- if (var7 != null) {
- var17 = var7.getBorderInsets(var1);
- } else {
- var17 = new Insets(0, 0, 0, 0);
- }
-
- int var18 = this.getTitlePosition();
- switch (var18) {
- case 0:
- case 2:
- int var21 = Math.max(0, var14 / 2 + 2 - 2);
- var8.y += var21;
- var8.height -= var21;
- this.textLoc.y = var8.y - var13 + (var17.top + var14 + var13) / 2;
- break;
- case 1:
- int var15 = var14 + var13 + (Math.max(2, 4) - 2);
- var8.y += var15;
- var8.height -= var15;
- this.textLoc.y = var8.y - (var13 + 2);
- break;
- case 3:
- this.textLoc.y = var8.y + var17.top + var14 + 2;
- break;
- case 4:
- this.textLoc.y = var8.y + var8.height - (var17.bottom + var13 + 2);
- break;
- case 5:
- var8.height -= var12 / 2;
- this.textLoc.y = var8.y + var8.height - var13 + (var14 + var13 - var17.bottom) / 2;
- break;
- case 6:
- var8.height -= var12;
- this.textLoc.y = var8.y + var8.height + var14 + 2;
- }
-
- switch (this.getTitleJustification()) {
- case 0:
- case 1:
- this.textLoc.x = var8.x + 5 + var17.left;
- break;
- case 2:
- this.textLoc.x = var8.x + (var8.width - var16) / 2;
- break;
- case 3:
- this.textLoc.x = var8.x + var8.width - (var16 + 5 + var17.right);
- }
-
- if (var7 != null) {
- if (var18 != 2 && var18 != 5) {
- var7.paintBorder(var1, var2, var8.x, var8.y, var8.width, var8.height);
- } else {
- Rectangle var19 = new Rectangle();
- Rectangle var20 = var2.getClipBounds();
- var19.setBounds(var20);
- if (computeIntersection(var19, var3, var4, this.textLoc.x, var6)) {
- var2.setClip(var19);
- var7.paintBorder(var1, var2, var8.x, var8.y, var8.width, var8.height);
- }
-
- var19.setBounds(var20);
- if (computeIntersection(var19, this.textLoc.x + var16, 0, var5 - var16 - this.textLoc.x, var6)) {
- var2.setClip(var19);
- var7.paintBorder(var1, var2, var8.x, var8.y, var8.width, var8.height);
- }
-
- var19.setBounds(var20);
- if (var18 == 2) {
- if (computeIntersection(var19, this.textLoc.x, var8.y + var17.top, var16, var6 - var8.y - var17.top)) {
- var2.setClip(var19);
- var7.paintBorder(var1, var2, var8.x, var8.y, var8.width, var8.height);
- }
- } else if (computeIntersection(var19, this.textLoc.x, var4, var16, var6 - var17.bottom - (var6 - var8.height - var8.y))) {
- var2.setClip(var19);
- var7.paintBorder(var1, var2, var8.x, var8.y, var8.width, var8.height);
- }
-
- var2.setClip(var20);
- }
- }
-
- var2.setColor(this.getTitleColor());
- var2.drawString(this.getTitle(), this.textLoc.x, this.textLoc.y);
- var2.setFont(var9);
- var2.setColor(var10);
- } else {
- if (var7 != null) {
- var7.paintBorder(var1, var2, var3, var4, var5, var6);
- }
-
- }
- }
-
- public void setBorder(Border var1) {
- this.border = var1;
- }
-
- public void setTitle(String var1) {
- this.title = var1;
- }
-
- public void setTitleColor(Color var1) {
- this.titleColor = var1;
- }
-
- public void setTitleFont(Font var1) {
- this.titleFont = var1;
- }
-
- public void setTitleJustification(int var1) {
- switch (var1) {
- case 0:
- case 1:
- case 2:
- case 3:
- this.titleJustification = var1;
- return;
- default:
- throw new IllegalArgumentException(var1 + " is not a valid title justification.");
- }
- }
-
- public void setTitlePosition(int var1) {
- switch (var1) {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- this.titlePosition = var1;
- return;
- default:
- throw new IllegalArgumentException(var1 + " is not a valid title position.");
- }
- }
- }
-